วิธีสำรองข้อมูล S3 ด้วย AWS Backup
บทความนี้แปลมาจากบทความที่เป็นภาษาญี่ปุ่นที่ชื่อว่า AWS BackupでS3のバックアップを取る方法とそのメリット โดยเจ้าของบทความนี้คือ คุณ 嶋村星哉
ทำไมถึงจำเป็นต้องใช้ AWS Backup แม้ว่า S3 จะมีฟีเจอร์ versioning
สำหรับการสำรองข้อมูล S3 หลายคนอาจสงสัยว่ามันต่างจากฟีเจอร์ versioning อย่างไร เหตุผลที่ควรใช้ AWS Backup มีอยู่สองประการ
1. เมื่อ bucket ถูกลบไปทั้งหมด
เมื่อใช้ AWS Backup คุณสามารถกู้คืน bucket ได้แม้ในกรณีที่ bucket ถูกลบไปทั้งหมด
2. เมื่อคุณต้องการย้อนกลับไปยังจุดเวลาใดจุดเวลาหนึ่ง
ฟีเจอร์ versioning ของ S3 ช่วยให้สามารถย้อนกลับ object ไปยังจุดเวลาใดจุดเวลาหนึ่งได้ แต่ไม่สามารถย้อนกลับ bucket ทั้งหมดไปยังจุดเวลาเดิมได้ อย่างไรก็ตาม การใช้ AWS Backup จะช่วยให้คุณสามารถย้อนกลับ bucket ไปยังจุดเวลาใดจุดเวลาหนึ่งได้
ข้อกำหนดเบื้องต้น
- Bucket ที่เตรียมไว้สำหรับครั้งนี้
เตรียมภาพจำนวน 4 ภาพ อัปโหลดไว้ที่ "aws-backup-blog-test" และทำการเปิด ฟีเจอร์ versioning ด้วย
- เปิดใช้งาน S3 ใน AWS Backup
โปรดตรวจสอบว่าใน "AWS Backup" ภายใต้ "Settings" และ "Service opt-in" ตัวเลือก "S3 - new" ถูกตั้งค่าเป็น【Enabled】หรือไม่ หากตั้งค่าเป็น【Disabled】 ให้เปิดใช้งานโดยเลือก "Configure resources"
ลองทำ
※ หากใครเกิด error เกี่ยวกับ Role ให้ทำการเพิ่ม Policy:
AWSBackupServiceRolePolicyForS3Backup และ AWSBackupServiceRolePolicyForS3Restore ให้กับ Role: AWSBackupDefaultServiceRole
1. การสร้าง Backup Vault
Backup Vault คือคอนเทนเนอร์สำหรับการจัดเก็บและจัดระเบียบข้อมูลสำรอง สามารถสร้างได้โดยไปที่ "Vaults" ใน AWS Backup แล้วเลือก "Create backup Vault"
ตั้งชื่อ Backup Vault และเลือกคีย์การเข้ารหัส (AWS KMS) สำหรับการเข้ารหัสข้อมูลสำรอง โดยเลือก (default) aws/backup คีย์การเข้ารหัสนี้จะใช้สำหรับการเข้ารหัสข้อมูลสำรอง
2. สร้าง Backup plans
ขั้นแรกคือการตั้งค่า Start option
ในครั้งนี้ เราจะลองตั้งค่าโดยไม่ใช้เทมเพลต ชื่อ Backup plan ตั้งเป็น "AwsBackupBlogPlan"
ชื่อกฎการสำรองข้อมูลตั้งเป็น "AwsBackupBlogRule"
เลือก Backup Vault ที่สร้างไว้ก่อนหน้านี้คือ "AwsBackupBlogVault"
ความถี่ในการสำรองข้อมูลเลือกเป็น "Hourly" (จะอธิบายตัวเลือกอื่น ๆ ด้านล่าง)
ระยะเวลาในการเก็บรักษาข้อมูลตั้งไว้ที่ "1 Day"
เมื่อกรอกข้อมูลข้างต้นเสร็จเรียบร้อยแล้ว ให้คลิก "Create Plan" เพื่อดำเนินการสร้าง
ทำการกำหนดทรัพยากร โดยตั้งชื่อ "Resource assignment name" เป็น "AwsBackupBlogResources" สำหรับ IAM Role เลือกใช้ Default role
เลือกทรัพยากรที่ต้องการสำรองข้อมูลก็คือ S3 bucket "aws-backup-blog-test"
เมื่อกรอกข้อมูลเสร็จเรียบร้อยแล้ว ให้คลิก "Assign Resources"
เมื่อเวลาผ่านไป ข้อมูลสำรองจะถูกสร้างขึ้นใน Backup Vault ที่เราได้สร้างไว้
ลองลบส่วนหนึ่งออกแล้วลองกู้คืนดู
ลองลบรูปภาพ test02.jpg
เรามาลองกู้คืนจากข้อมูลสำรองล่าสุดกัน
จาก Backup Vault ให้เลือก "AwsBackupBlogVault" แล้วไปที่ "Recovery points" เพื่อเลือกจุดที่คุณต้องการกู้คืน
สำหรับการตั้งค่า จะใช้ค่าเริ่มต้นทั้งหมด
ผลลัพธ์
ไฟล์ภาพ test02.jpg สามารถกู้คืนกลับมาได้
สำหรับภาพที่ถูกลบไป ตัวมาร์กเกอร์การลบไม่ได้หายไป แต่เวอร์ชันที่ถูกกู้คืนกลับมาจะถูกจัดการเวอร์ชันไว้
ลองลบ bucket ทั้งหมดแล้วกู้คืนดู
ลองลบ bucket ที่เราสร้างไว้ จากนั้นทำการกู้คืนด้วยวิธีเดียวกัน
ผลลัพธ์
bucket ถูกกู้คืนมาอีกครั้ง และเนื้อหาภายในก็ได้รับการกู้คืนอย่างสมบูรณ์
วิธีการกำหนดความถี่ในการสำรองข้อมูล
ความถี่ในการสำรองข้อมูลมีตัวเลือกดังนี้: "Hourly", "Every 12 hours", "Daily", "Weekly", "Monthly", และ "Custom cron expression"
ในกรณีที่เลือก【Weekly】 คุณสามารถระบุได้ว่าจะให้ทำการสำรองข้อมูลในวันไหนของสัปดาห์
ในกรณีที่เลือก【Monthly】 คุณสามารถระบุได้ว่าจะให้ทำการสำรองข้อมูลในวันที่เท่าไหร่ หรือเป็นวันใดของสัปดาห์ในลำดับที่เท่าไหร่ครับ เช่น วันที่ 15 ของเดือน หรือวันจันทร์ที่สองของเดือน เป็นต้น
สำหรับ【Custom cron expression】 เนื่องจากการอธิบายอาจยาวมาก ขอแนะนำให้ดูที่เอกสารทางการของ AWS
การใช้ cron expression ช่วยให้คุณสามารถตั้งเวลาสำรองข้อมูลได้อย่างละเอียดมากขึ้น เช่น ทุก 15 นาที เป็นต้น
สุดท้ายนี้
ไม่ว่าจะลบ bucket หรือ object ไปทั้งหมด ก็สามารถกู้คืนได้ ดังนั้นผมคิดว่านี่เป็นฟีเจอร์ที่ควรเปิดใช้งานไว้ตลอดเวลา
บทความต้นฉบับ
- AWS BackupでS3のバックアップを取る方法とそのメリット(ภาษาญี่ปุ่น)